package to.pm.acquisti.core;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import to.pm.entity.acquisti.DettaglioOrdineEsterno;
import to.pm.entity.acquisti.Fornitore;
import to.pm.entity.acquisti.OrdineEsterno;
import to.pm.entity.acquisti.StatoOrdineEsterno;


public class GestioneOrdine {
    private EntityManager em;

    public void setEm(EntityManager em) {
        this.em = em;
    }

    public EntityManager getEm() {
        return em;
    }

    public OrdineEsterno addOrdineEsterno(Fornitore f, List<DettaglioOrdineEsterno> ld, String numeroOrdineInterno){
        Date dataAttuale = new Date();
        //TODO check se fornitore estiste ed e' valido...
        OrdineEsterno o = new OrdineEsterno();
        o.setDataCreazione(dataAttuale);
        o.setFornitore(f);
        o.setNumeroOrdineInterno(numeroOrdineInterno);
        em.persist(o);

        f  = em.getReference(Fornitore.class, f.getId());
        List<OrdineEsterno> coe = f.getOrdini();
        coe.add(o);
        f.setOrdini(coe);
        f = em.merge(f);

        for(DettaglioOrdineEsterno d : ld){
            d.setOrdine(o);
            em.persist(d);
        }

        o.setDettaglio(ld);
        em.persist(o);
        return o;
    }

    public OrdineEsterno setStatoInRicezione(OrdineEsterno ordineEsterno) {
        //TODO Controlli per verifica passaggio stato qui? o in entity? o...?
        ordineEsterno.setStato(StatoOrdineEsterno.ATTESA_RICEZIONE);
        em.merge(ordineEsterno);
        return ordineEsterno;
    }
}
